// pages/01_register_page/index.js
/**
微信小程序的生命周期是指小程序从创建到销毁的过程中所经历的各个阶段。 
 1. 小程序的生命周期
  微信小程序的生命周期主要包括以下几个阶段：
  1.1. onLaunch
  - 触发时机：小程序初始化时触发。
  - 使用场景：可以在这里进行一些全局的初始化工作，比如获取用户信息、设置全局变量等。
  - 示例：
  App({
      onLaunch: function () {
        console.log('小程序启动');
      }
    });
  1.2. onShow

  - 触发时机：小程序从后台进入前台时触发。
  - 使用场景：可以在这里处理页面显示时需要更新的数据，比如重新获取数据或更新状态。
  - 示例：
  App({
      onShow: function (options) {
        console.log('小程序显示', options);
      }
    });
  1.3. onHide

  - 触发时机：小程序从前台进入后台时触发。
  - 使用场景：可以在这里保存状态或进行一些清理工作，比如暂停计时器。
  - 示例：
  App({
      onHide: function () {
        console.log('小程序隐藏');
      }
    });
  1.4. onError
  - 触发时机：小程序发生脚本错误时触发。
  - 使用场景：可以在这里记录错误信息，进行错误监控。
  - 示例：
  App({
      onError: function (msg) {
        console.error('小程序错误', msg);
      }
    });
  2. 页面的生命周期

  每个页面也有自己的生命周期函数，主要包括：

  2.1. onLoad
  - 触发时机：页面加载时触发。
  - 使用场景：可以在这里初始化页面数据。
  - 示例：
  Page({
      onLoad: function (options) {
        console.log('页面加载', options);
      }
    });
  2.2. onShow
  - 触发时机：页面显示时触发。
  - 使用场景：可以在这里更新页面数据。
  - 示例：
  Page({
      onShow: function () {
        console.log('页面显示');
      }
    });
  2.3. onHide
  - 触发时机：页面隐藏时触发。
  - 使用场景：可以在这里保存状态。
  - 示例：
  Page({
      onHide: function () {
        console.log('页面隐藏');
      }
    });
  2.4. onUnload
  - 触发时机：页面卸载时触发。
  - 使用场景：可以在这里进行清理工作，比如取消网络请求。
  - 示例：
  Page({
      onUnload: function () {
        console.log('页面卸载');
      }
    });
  3. 总结
  了解微信小程序的生命周期对于有效管理应用状态、优化性能和处理数据非常重要。通过合理使用生命周期函数，开发者可以确保小程序在不同状态下的行为符合预期，从而提升用户体验。
 */
Page({
  /**
   * 页面的初始数据
   */
  data: {
    banners: [],
    recommends: [],

    counter: 100,
    btns: ["red", "blue", "green", "orange"]
  },

  // 1.作用一: 发送网络请求, 请求数据
  onLoad(options) {
    console.log('页面加载 onLoad', options);

    wx.request({
      url: 'http://123.207.32.32:8000/home/multidata',
      success: (res) => {
        const data = res.data.data
        const banners = data.banner.list
        const recommends = data.recommend.list
        this.setData({ banners, recommends })
      }
    })
  },

  // 2.绑定wxml中产生事件后的回调函数
  onBtnClick(event) {
    console.log('onBtnClick', event.target.dataset);
  },

  // 3.绑定下拉刷新/达到底部/页面滚动
  onPullDownRefresh() {
    console.log("onPullDownRefresh");
  },
  onReachBottom() {
    console.log("onReachBottom");
  },
  onPageScroll() {
    console.log("onPageScroll");
  },
  // 生命周期函数: 
  onShow: function() {
    // 页面出现在前台时执行
  },
  onReady: function() {
    // 页面首次渲染完毕时执行
  },
  onHide: function() {
    // 页面从前台变为后台时执行
  },
  onUnload: function() {
    // 页面销毁时执行
  },
  onPullDownRefresh: function() {
    // 触发下拉刷新时执行
  },
  onReachBottom: function() {
    // 页面触底时执行
  },
  onShareAppMessage: function () {
    // 页面被用户分享时执行
  },
  onPageScroll: function() {
    // 页面滚动时执行
  },
  onResize: function() {
    // 页面尺寸变化时执行
  },
})